home *** CD-ROM | disk | FTP | other *** search
- /*
- FinalWriter2Text
- EvenMore FileIO plugin
- Author: Chris Perver
- Copyright (c) 2001
- */
-
-
- OPT REG=5
-
- LIBRARY 'finalwriter2text.plugin',1,1,'FinalWriter2Text 1.01' IS em_main, em_end, em_info, em_pluginid, em_begin, em_format
-
- MODULE 'tools/ctype', '*epo'
-
- DEF mem2, len2
-
-
- PROC em_isdatatype(memadr, lenadr)
- DEF vers = FALSE
- DEF w:PTR TO LONG
-
- -> Check for FORM header
-
- w := Long(memadr)
- IF w = "FORM"
- w := Long(memadr + 8)
- IF w = "SWRT" THEN vers := TRUE
- ENDIF
- -> WriteF('hhhehheh \d\n', vers)
- ENDPROC vers
-
-
- PROC em_parsedata(memadr, lenadr)
- DEF count = 0, count2 = 0
- DEF wrapping = 80, notdonewrapping = TRUE, currchar = 0
- DEF notdone = TRUE
- -> Allocate memory for file
- -> IF (mem2 := New(lenadr + 1)) = NIL THEN RETURN -1
- -> mem2[lenadr + 1] := "\n" -> Put safety LF at the end of mem
- DEF w:PTR TO LONG
- -> DEF iswtxt = FALSE
-
- mem2 := memadr
-
- WHILE notdone AND (count < lenadr)
- -> WriteF('hey')
- /* IF (currchar >= wrapping)
- -> WriteF('wrapped \d', count)
- WHILE notdonewrapping
- SELECT 256 OF memadr[count]
- CASE $00
- DEC count
- DEFAULT
- IF isspace(memadr[count]) = FALSE
- DEC count
- DEC count2
- ELSE
- notdonewrapping := FALSE
- ENDIF
- ENDSELECT
- ENDWHILE
- INC count
-
- currchar := 0
- memadr[count2++] := "\n"
- notdonewrapping := TRUE
- ENDIF
- */
-
-
- w := Long(memadr + count)
-
- -> SELECT 256 OF memadr[count]
-
- -> CASE "C"
- -> w := Long(memadr + count)
- SELECT w
- -> ???
- CASE "RULE"
- count := count + 4
- mem2[count2++] := "\n"
- currchar := 0
- CASE "RMST"
- count := count + 4
- CASE "LMST"
- count := count + 4
- CASE "CHRS"
- count := count + 8
- w := Long(memadr + count)
- SELECT w
- CASE "RULE"
- mem2[count2++] := "\n"
- count := count + 4
- currchar := 0
- CASE "LMST"
- count := count + 4
- CASE "RMST"
- count := count + 4
- DEFAULT
-
- WHILE (memadr[count] <> $00)
- mem2[count2++] := memadr[count++]
- INC currchar
- IF currchar >= wrapping
- notdonewrapping := TRUE
- WHILE notdonewrapping
- -> SELECT 256 OF memadr[count]
- -> DEFAULT
- IF isspace(memadr[count]) = FALSE
- DEC count
- DEC count2
- ELSE
- notdonewrapping := FALSE
- ENDIF
- -> ENDSELECT
- ENDWHILE
- INC count
-
- currchar := 0
- memadr[count2++] := "\n"
- ENDIF
- ENDWHILE
-
- w := Long(memadr + count - 4)
- SELECT w
- CASE "RULE"
- count2 := count2 - 4
- mem2[count2++] := "\n"
- currchar := 0
- ENDSELECT
-
- INC count
- ENDSELECT
- DEFAULT
- INC count
- ENDSELECT
-
- ENDWHILE
-
-
- mem2[count2] := "\n"
-
- -> IF memadr
- -> Dispose(memadr); memadr := NIL
- -> ENDIF
- ENDPROC mem2, count2
- -><
-
- -> *** STANDARD PROCS FOR PLUGINS
-
-
- PROC em_main(epo:PTR TO em_pluginobj)
- mem2, len2 := em_parsedata(epo.buffer, epo.length)
- epo.buffer := mem2
- epo.length := len2
- RETURN TRUE
- ENDPROC
-
- PROC em_begin(epo:PTR TO em_pluginobj)
- DEF vers
- vers := em_isdatatype(epo.buffer, epo.length)
- IF vers
- RETURN TRUE
- ELSE
- RETURN FALSE
- ENDIF
-
- ENDPROC
-
- PROC em_end() IS EMPTY
-
- PROC em_info() IS 'FinalWriter2Text 1.01'
-
- PROC em_pluginid() IS "FILE"
-
- PROC em_format() IS 'FinalWriter/Copy'
-
- PROC main() IS EMPTY
-